package br.com.edumobi.dados.modelos;

import java.util.Date;

import br.com.edumobi.dados.modelos.enuns.Sexo;

public class Aluno extends ObjetoGeral {

    public String nome;
    public String cpf;
    public String email;
    public String senha;
    public Sexo sexo;
    public String matricula;
    public Date dataDeNascimento;
    public Endereco endereco;
    public String telefoneResidencial;
    public String telefoneCelular;

    public Aluno(Long id, String nome, String cpf, String email, String senha, Sexo sexo, String matricula, Date dataDeNascimento, Endereco endereco, String telefoneResidencial, String telefoneCelular) {
        super(id);
        this.nome = nome;
        this.cpf = cpf;
        this.email = email;
        this.senha = senha;
        this.sexo = sexo;
        this.matricula = matricula;
        this.dataDeNascimento = dataDeNascimento;
        this.endereco = endereco;
        this.telefoneResidencial = telefoneResidencial;
        this.telefoneCelular = telefoneCelular;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Aluno)) return false;
        if (!super.equals(o)) return false;

        Aluno aluno = (Aluno) o;

        if (!cpf.equals(aluno.cpf)) return false;
        if (!dataDeNascimento.equals(aluno.dataDeNascimento)) return false;
        if (!email.equals(aluno.email)) return false;
        if (!endereco.equals(aluno.endereco)) return false;
        if (!matricula.equals(aluno.matricula)) return false;
        if (!nome.equals(aluno.nome)) return false;
        if (!senha.equals(aluno.senha)) return false;
        if (!sexo.equals(aluno.sexo)) return false;
        if (!telefoneCelular.equals(aluno.telefoneCelular)) return false;
        if (!telefoneResidencial.equals(aluno.telefoneResidencial)) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + nome.hashCode();
        result = 31 * result + cpf.hashCode();
        result = 31 * result + email.hashCode();
        result = 31 * result + senha.hashCode();
        result = 31 * result + sexo.hashCode();
        result = 31 * result + matricula.hashCode();
        result = 31 * result + dataDeNascimento.hashCode();
        result = 31 * result + endereco.hashCode();
        result = 31 * result + telefoneResidencial.hashCode();
        result = 31 * result + telefoneCelular.hashCode();
        return result;
    }
}
